home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / demos / GL / ideas / draw_lamp.c < prev    next >
C/C++ Source or Header  |  1994-08-01  |  24KB  |  793 lines

  1. /*
  2.  * Copyright 1992, 1993, 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. #include <gl.h>
  18.  
  19. #include "objects.h"
  20.  
  21. float hp[6][13][3] = {
  22.  
  23.     {
  24.     {0.000000, 0.000000, 1.000000},
  25.     {0.000000, 0.000000, 1.000000},
  26.     {0.000000, 0.000000, 1.000000},
  27.     {0.000000, 0.000000, 1.000000},
  28.     {0.000000, 0.000000, 1.000000},
  29.     {0.000000, 0.000000, 1.000000},
  30.     {0.000000, 0.000000, 1.000000},
  31.     {0.000000, 0.000000, 1.000000},
  32.     {0.000000, 0.000000, 1.000000},
  33.     {0.000000, 0.000000, 1.000000},
  34.     {0.000000, 0.000000, 1.000000},
  35.     {0.000000, 0.000000, 1.000000},
  36.     {0.000000, 0.000000, 1.000000},
  37.     },
  38.     {
  39.     {0.438371, 0.000000, 0.898794},
  40.     {0.379641, 0.219186, 0.898794},
  41.     {0.219186, 0.379641, 0.898794},
  42.     {0.000000, 0.438371, 0.898794},
  43.     {-0.219186, 0.379641, 0.898794},
  44.     {-0.379641, 0.219186, 0.898794},
  45.     {-0.438371, 0.000000, 0.898794},
  46.     {-0.379641, -0.219186, 0.898794},
  47.     {-0.219186, -0.379641, 0.898794},
  48.     {0.000000, -0.438371, 0.898794},
  49.     {0.219186, -0.379641, 0.898794},
  50.     {0.379641, -0.219186, 0.898794},
  51.     {0.438371, 0.000000, 0.898794},
  52.     },
  53.     {
  54.     {0.788011, 0.000000, 0.615662},
  55.     {0.682437, 0.394005, 0.615662},
  56.     {0.394005, 0.682437, 0.615662},
  57.     {0.000000, 0.788011, 0.615662},
  58.     {-0.394005, 0.682437, 0.615662},
  59.     {-0.682437, 0.394005, 0.615662},
  60.     {-0.788011, 0.000000, 0.615662},
  61.     {-0.682437, -0.394005, 0.615662},
  62.     {-0.394005, -0.682437, 0.615662},
  63.     {0.000000, -0.788011, 0.615662},
  64.     {0.394005, -0.682437, 0.615662},
  65.     {0.682437, -0.394005, 0.615662},
  66.     {0.788011, 0.000000, 0.615662},
  67.     },
  68.     {
  69.     {0.978148, 0.000000, 0.207912},
  70.     {0.847101, 0.489074, 0.207912},
  71.     {0.489074, 0.847101, 0.207912},
  72.     {0.000000, 0.978148, 0.207912},
  73.     {-0.489074, 0.847101, 0.207912},
  74.     {-0.847101, 0.489074, 0.207912},
  75.     {-0.978148, 0.000000, 0.207912},
  76.     {-0.847101, -0.489074, 0.207912},
  77.     {-0.489074, -0.847101, 0.207912},
  78.     {0.000000, -0.978148, 0.207912},
  79.     {0.489074, -0.847101, 0.207912},
  80.     {0.847101, -0.489074, 0.207912},
  81.     {0.978148, 0.000000, 0.207912},
  82.     },
  83.     {
  84.     {0.970296, 0.000000, -0.241922},
  85.     {0.840301, 0.485148, -0.241922},
  86.     {0.485148, 0.840301, -0.241922},
  87.     {0.000000, 0.970296, -0.241922},
  88.     {-0.485148, 0.840301, -0.241922},
  89.     {-0.840301, 0.485148, -0.241922},
  90.     {-0.970296, 0.000000, -0.241922},
  91.     {-0.840301, -0.485148, -0.241922},
  92.     {-0.485148, -0.840301, -0.241922},
  93.     {0.000000, -0.970296, -0.241922},
  94.     {0.485148, -0.840301, -0.241922},
  95.     {0.840301, -0.485148, -0.241922},
  96.     {0.970296, 0.000000, -0.241922},
  97.     },
  98.     {
  99.     {0.766044, 0.000000, -0.642788},
  100.     {0.663414, 0.383022, -0.642788},
  101.     {0.383022, 0.663414, -0.642788},
  102.     {0.000000, 0.766044, -0.642788},
  103.     {-0.383022, 0.663414, -0.642788},
  104.     {-0.663414, 0.383022, -0.642788},
  105.     {-0.766044, 0.000000, -0.642788},
  106.     {-0.663414, -0.383022, -0.642788},
  107.     {-0.383022, -0.663414, -0.642788},
  108.     {0.000000, -0.766044, -0.642788},
  109.     {0.383022, -0.663414, -0.642788},
  110.     {0.663414, -0.383022, -0.642788},
  111.     {0.766044, 0.000000, -0.642788},
  112.     },
  113. };
  114.  
  115. float ltp[9][25][3] = {
  116.      {
  117.     {10.000000, 0.000000, 1.000000},
  118.     {9.659258, -2.588191, 1.000000},
  119.     {8.660254, -5.000000, 1.000000},
  120.     {7.071068, -7.071068, 1.000000},
  121.     {5.000000, -8.660254, 1.000000},
  122.     {2.588191, -9.659258, 1.000000},
  123.     {0.000000, -10.000000, 1.000000},
  124.     {-2.588191, -9.659258, 1.000000},
  125.     {-5.000000, -8.660254, 1.000000},
  126.     {-7.071068, -7.071068, 1.000000},
  127.     {-8.660254, -5.000000, 1.000000},
  128.     {-9.659258, -2.588191, 1.000000},
  129.     {-10.000000, 0.000000, 1.000000},
  130.     {-9.659258, 2.588191, 1.000000},
  131.     {-8.660254, 5.000000, 1.000000},
  132.     {-7.071068, 7.071068, 1.000000},
  133.     {-5.000000, 8.660254, 1.000000},
  134.     {-2.588191, 9.659258, 1.000000},
  135.     {0.000000, 10.000000, 1.000000},
  136.     {2.588191, 9.659258, 1.000000},
  137.     {5.000000, 8.660254, 1.000000},
  138.     {7.071068, 7.071068, 1.000000},
  139.     {8.660254, 5.000000, 1.000000},
  140.     {9.659258, 2.588191, 1.000000},
  141.     {10.000000, 0.000000, 1.000000},
  142.     },
  143.  
  144.      {
  145.     {10.707107, 0.000000, 0.707107},
  146.     {10.342271, -2.771203, 0.707107},
  147.     {9.272627, -5.353553, 0.707107},
  148.     {7.571068, -7.571068, 0.707107},
  149.     {5.353553, -9.272627, 0.707107},
  150.     {2.771203, -10.342271, 0.707107},
  151.     {0.000000, -10.707107, 0.707107},
  152.     {-2.771203, -10.342271, 0.707107},
  153.     {-5.353553, -9.272627, 0.707107},
  154.     {-7.571068, -7.571068, 0.707107},
  155.     {-9.272627, -5.353553, 0.707107},
  156.     {-10.342271, -2.771203, 0.707107},
  157.     {-10.707107, 0.000000, 0.707107},
  158.     {-10.342271, 2.771203, 0.707107},
  159.     {-9.272627, 5.353553, 0.707107},
  160.     {-7.571068, 7.571068, 0.707107},
  161.     {-5.353553, 9.272627, 0.707107},
  162.     {-2.771203, 10.342271, 0.707107},
  163.     {0.000000, 10.707107, 0.707107},
  164.     {2.771203, 10.342271, 0.707107},
  165.     {5.353553, 9.272627, 0.707107},
  166.     {7.571068, 7.571068, 0.707107},
  167.     {9.272627, 5.353553, 0.707107},
  168.     {10.342271, 2.771203, 0.707107},
  169.     {10.707107, 0.000000, 0.707107},
  170.     },
  171.  
  172.      {
  173.     {11.000000, 0.000000, 0.000000},
  174.     {10.625184, -2.847009, 0.000000},
  175.     {9.526279, -5.500000, 0.000000},
  176.     {7.778174, -7.778174, 0.000000},
  177.     {5.500000, -9.526279, 0.000000},
  178.     {2.847009, -10.625184, 0.000000},
  179.     {0.000000, -11.000000, 0.000000},
  180.     {-2.847009, -10.625184, 0.000000},
  181.     {-5.500000, -9.526279, 0.000000},
  182.     {-7.778174, -7.778174, 0.000000},
  183.     {-9.526279, -5.500000, 0.000000},
  184.     {-10.625184, -2.847009, 0.000000},
  185.     {-11.000000, 0.000000, 0.000000},
  186.     {-10.625184, 2.847009, 0.000000},
  187.     {-9.526279, 5.500000, 0.000000},
  188.     {-7.778174, 7.778174, 0.000000},
  189.     {-5.500000, 9.526279, 0.000000},
  190.     {-2.847009, 10.625184, 0.000000},
  191.     {0.000000, 11.000000, 0.000000},
  192.     {2.847009, 10.625184, 0.000000},
  193.     {5.500000, 9.526279, 0.000000},
  194.     {7.778174, 7.778174, 0.000000},
  195.     {9.526279, 5.500000, 0.000000},
  196.     {10.625184, 2.847009, 0.000000},
  197.     {11.000000, 0.000000, 0.000000},
  198.     },
  199.  
  200.      {
  201.     {10.707107, 0.000000, -0.707107},
  202.     {10.342271, -2.771203, -0.707107},
  203.     {9.272627, -5.353553, -0.707107},
  204.     {7.571068, -7.571068, -0.707107},
  205.     {5.353553, -9.272627, -0.707107},
  206.     {2.771203, -10.342271, -0.707107},
  207.     {0.000000, -10.707107, -0.707107},
  208.     {-2.771203, -10.342271, -0.707107},
  209.     {-5.353553, -9.272627, -0.707107},
  210.     {-7.571068, -7.571068, -0.707107},
  211.     {-9.272627, -5.353553, -0.707107},
  212.     {-10.342271, -2.771203, -0.707107},
  213.     {-10.707107, 0.000000, -0.707107},
  214.     {-10.342271, 2.771203, -0.707107},
  215.     {-9.272627, 5.353553, -0.707107},
  216.     {-7.571068, 7.571068, -0.707107},
  217.     {-5.353553, 9.272627, -0.707107},
  218.     {-2.771203, 10.342271, -0.707107},
  219.     {0.000000, 10.707107, -0.707107},
  220.     {2.771203, 10.342271, -0.707107},
  221.     {5.353553, 9.272627, -0.707107},
  222.     {7.571068, 7.571068, -0.707107},
  223.     {9.272627, 5.353553, -0.707107},
  224.     {10.342271, 2.771203, -0.707107},
  225.     {10.707107, 0.000000, -0.707107},
  226.     },
  227.  
  228.      {
  229.     {10.000000, 0.000000, -1.000000},
  230.     {9.659258, -2.588191, -1.000000},
  231.     {8.660254, -5.000000, -1.000000},
  232.     {7.071068, -7.071068, -1.000000},
  233.     {5.000000, -8.660254, -1.000000},
  234.     {2.588191, -9.659258, -1.000000},
  235.     {0.000000, -10.000000, -1.000000},
  236.     {-2.588191, -9.659258, -1.000000},
  237.     {-5.000000, -8.660254, -1.000000},
  238.     {-7.071068, -7.071068, -1.000000},
  239.     {-8.660254, -5.000000, -1.000000},
  240.     {-9.659258, -2.588191, -1.000000},
  241.     {-10.000000, 0.000000, -1.000000},
  242.     {-9.659258, 2.588191, -1.000000},
  243.     {-8.660254, 5.000000, -1.000000},
  244.     {-7.071068, 7.071068, -1.000000},
  245.     {-5.000000, 8.660254, -1.000000},
  246.     {-2.588191, 9.659258, -1.000000},
  247.     {0.000000, 10.000000, -1.000000},
  248.     {2.588191, 9.659258, -1.000000},
  249.     {5.000000, 8.660254, -1.000000},
  250.     {7.071068, 7.071068, -1.000000},
  251.     {8.660254, 5.000000, -1.000000},
  252.     {9.659258, 2.588191, -1.000000},
  253.     {10.000000, 0.000000, -1.000000},
  254.     },
  255.  
  256.      {
  257.     {9.292893, 0.000000, -0.707107},
  258.     {8.976246, -2.405178, -0.707107},
  259.     {8.047881, -4.646447, -0.707107},
  260.     {6.571068, -6.571068, -0.707107},
  261.     {4.646447, -8.047881, -0.707107},
  262.     {2.405178, -8.976246, -0.707107},
  263.     {0.000000, -9.292893, -0.707107},
  264.     {-2.405178, -8.976246, -0.707107},
  265.     {-4.646447, -8.047881, -0.707107},
  266.     {-6.571068, -6.571068, -0.707107},
  267.     {-8.047881, -4.646447, -0.707107},
  268.     {-8.976246, -2.405178, -0.707107},
  269.     {-9.292893, 0.000000, -0.707107},
  270.     {-8.976246, 2.405178, -0.707107},
  271.     {-8.047881, 4.646447, -0.707107},
  272.     {-6.571068, 6.571068, -0.707107},
  273.     {-4.646447, 8.047881, -0.707107},
  274.     {-2.405178, 8.976246, -0.707107},
  275.     {0.000000, 9.292893, -0.707107},
  276.     {2.405178, 8.976246, -0.707107},
  277.     {4.646447, 8.047881, -0.707107},
  278.     {6.571068, 6.571068, -0.707107},
  279.     {8.047881, 4.646447, -0.707107},
  280.     {8.976246, 2.405178, -0.707107},
  281.     {9.292893, 0.000000, -0.707107},
  282.     },
  283.  
  284.      {
  285.     {9.000000, 0.000000, 0.000000},
  286.     {8.693333, -2.329371, 0.000000},
  287.     {7.794229, -4.500000, 0.000000},
  288.     {6.363961, -6.363961, 0.000000},
  289.     {4.500000, -7.794229, 0.000000},
  290.     {2.329371, -8.693333, 0.000000},
  291.     {0.000000, -9.000000, 0.000000},
  292.     {-2.329371, -8.693333, 0.000000},
  293.     {-4.500000, -7.794229, 0.000000},
  294.     {-6.363961, -6.363961, 0.000000},
  295.     {-7.794229, -4.500000, 0.000000},
  296.     {-8.693333, -2.329371, 0.000000},
  297.     {-9.000000, 0.000000, 0.000000},
  298.     {-8.693333, 2.329371, 0.000000},
  299.     {-7.794229, 4.500000, 0.000000},
  300.     {-6.363961, 6.363961, 0.000000},
  301.     {-4.500000, 7.794229, 0.000000},
  302.     {-2.329371, 8.693333, 0.000000},
  303.     {0.000000, 9.000000, 0.000000},
  304.     {2.329371, 8.693333, 0.000000},
  305.     {4.500000, 7.794229, 0.000000},
  306.     {6.363961, 6.363961, 0.000000},
  307.     {7.794229, 4.500000, 0.000000},
  308.     {8.693333, 2.329371, 0.000000},
  309.     {9.000000, 0.000000, 0.000000},
  310.     },
  311.  
  312.      {
  313.     {9.292893, 0.000000, 0.707107},
  314.     {8.976246, -2.405178, 0.707107},
  315.     {8.047881, -4.646447, 0.707107},
  316.     {6.571068, -6.571068, 0.707107},
  317.     {4.646447, -8.047881, 0.707107},
  318.     {2.405178, -8.976246, 0.707107},
  319.     {0.000000, -9.292893, 0.707107},
  320.     {-2.405178, -8.976246, 0.707107},
  321.     {-4.646447, -8.047881, 0.707107},
  322.     {-6.571068, -6.571068, 0.707107},
  323.     {-8.047881, -4.646447, 0.707107},
  324.     {-8.976246, -2.405178, 0.707107},
  325.     {-9.292893, 0.000000, 0.707107},
  326.     {-8.976246, 2.405178, 0.707107},
  327.     {-8.047881, 4.646447, 0.707107},
  328.     {-6.571068, 6.571068, 0.707107},
  329.     {-4.646447, 8.047881, 0.707107},
  330.     {-2.405178, 8.976246, 0.707107},
  331.     {0.000000, 9.292893, 0.707107},
  332.     {2.405178, 8.976246, 0.707107},
  333.     {4.646447, 8.047881, 0.707107},
  334.     {6.571068, 6.571068, 0.707107},
  335.     {8.047881, 4.646447, 0.707107},
  336.     {8.976246, 2.405178, 0.707107},
  337.     {9.292893, 0.000000, 0.707107},
  338.     },
  339.  
  340.      {
  341.     {10.000000, 0.000000, 1.000000},
  342.     {9.659258, -2.588191, 1.000000},
  343.     {8.660254, -5.000000, 1.000000},
  344.     {7.071068, -7.071068, 1.000000},
  345.     {5.000000, -8.660254, 1.000000},
  346.     {2.588191, -9.659258, 1.000000},
  347.     {0.000000, -10.000000, 1.000000},
  348.     {-2.588191, -9.659258, 1.000000},
  349.     {-5.000000, -8.660254, 1.000000},
  350.     {-7.071068, -7.071068, 1.000000},
  351.     {-8.660254, -5.000000, 1.000000},
  352.     {-9.659258, -2.588191, 1.000000},
  353.     {-10.000000, 0.000000, 1.000000},
  354.     {-9.659258, 2.588191, 1.000000},
  355.     {-8.660254, 5.000000, 1.000000},
  356.     {-7.071068, 7.071068, 1.000000},
  357.     {-5.000000, 8.660254, 1.000000},
  358.     {-2.588191, 9.659258, 1.000000},
  359.     {0.000000, 10.000000, 1.000000},
  360.     {2.588191, 9.659258, 1.000000},
  361.     {5.000000, 8.660254, 1.000000},
  362.     {7.071068, 7.071068, 1.000000},
  363.     {8.660254, 5.000000, 1.000000},
  364.     {9.659258, 2.588191, 1.000000},
  365.     {10.000000, 0.000000, 1.000000},
  366.     },
  367.  
  368. };
  369.  
  370. float ltn[9][25][3] = {
  371.     {
  372.     {0.000000, 0.000000, 1.000000},
  373.     {0.000000, 0.000000, 1.000000},
  374.     {0.000000, 0.000000, 1.000000},
  375.     {0.000000, 0.000000, 1.000000},
  376.     {0.000000, 0.000000, 1.000000},
  377.     {0.000000, 0.000000, 1.000000},
  378.     {0.000000, 0.000000, 1.000000},
  379.     {0.000000, 0.000000, 1.000000},
  380.     {0.000000, 0.000000, 1.000000},
  381.     {0.000000, 0.000000, 1.000000},
  382.     {0.000000, 0.000000, 1.000000},
  383.     {0.000000, 0.000000, 1.000000},
  384.     {0.000000, 0.000000, 1.000000},
  385.     {0.000000, 0.000000, 1.000000},
  386.     {0.000000, 0.000000, 1.000000},
  387.     {0.000000, 0.000000, 1.000000},
  388.     {0.000000, 0.000000, 1.000000},
  389.     {0.000000, 0.000000, 1.000000},
  390.     {0.000000, 0.000000, 1.000000},
  391.     {0.000000, 0.000000, 1.000000},
  392.     {0.000000, 0.000000, 1.000000},
  393.     {0.000000, 0.000000, 1.000000},
  394.     {0.000000, 0.000000, 1.000000},
  395.     {0.000000, 0.000000, 1.000000},
  396.     {0.000000, 0.000000, 1.000000},
  397.     },
  398.  
  399.     {
  400.     {0.707107, 0.000000, 0.707107},
  401.     {0.683013, -0.183013, 0.707107},
  402.     {0.612372, -0.353553, 0.707107},
  403.     {0.500000, -0.500000, 0.707107},
  404.     {0.353553, -0.612372, 0.707107},
  405.     {0.183013, -0.683013, 0.707107},
  406.     {0.000000, -0.707107, 0.707107},
  407.     {-0.183013, -0.683013, 0.707107},
  408.     {-0.353553, -0.612372, 0.707107},
  409.     {-0.500000, -0.500000, 0.707107},
  410.     {-0.612372, -0.353553, 0.707107},
  411.     {-0.683013, -0.183013, 0.707107},
  412.     {-0.707107, 0.000000, 0.707107},
  413.     {-0.683013, 0.183013, 0.707107},
  414.     {-0.612372, 0.353553, 0.707107},
  415.     {-0.500000, 0.500000, 0.707107},
  416.     {-0.353553, 0.612372, 0.707107},
  417.     {-0.183013, 0.683013, 0.707107},
  418.     {0.000000, 0.707107, 0.707107},
  419.     {0.183013, 0.683013, 0.707107},
  420.     {0.353553, 0.612372, 0.707107},
  421.     {0.500000, 0.500000, 0.707107},
  422.     {0.612372, 0.353553, 0.707107},
  423.     {0.683013, 0.183013, 0.707107},
  424.     {0.707107, 0.000000, 0.707107},
  425.     },
  426.  
  427.     {
  428.     {1.000000, 0.000000, 0.000000},
  429.     {0.965926, -0.258819, 0.000000},
  430.     {0.866025, -0.500000, 0.000000},
  431.     {0.707107, -0.707107, 0.000000},
  432.     {0.500000, -0.866025, 0.000000},
  433.     {0.258819, -0.965926, 0.000000},
  434.     {0.000000, -1.000000, 0.000000},
  435.     {-0.258819, -0.965926, 0.000000},
  436.     {-0.500000, -0.866025, 0.000000},
  437.     {-0.707107, -0.707107, 0.000000},
  438.     {-0.866025, -0.500000, 0.000000},
  439.     {-0.965926, -0.258819, 0.000000},
  440.     {-1.000000, 0.000000, 0.000000},
  441.     {-0.965926, 0.258819, 0.000000},
  442.     {-0.866025, 0.500000, 0.000000},
  443.     {-0.707107, 0.707107, 0.000000},
  444.     {-0.500000, 0.866025, 0.000000},
  445.     {-0.258819, 0.965926, 0.000000},
  446.     {0.000000, 1.000000, 0.000000},
  447.     {0.258819, 0.965926, 0.000000},
  448.     {0.500000, 0.866025, 0.000000},
  449.     {0.707107, 0.707107, 0.000000},
  450.     {0.866025, 0.500000, 0.000000},
  451.     {0.965926, 0.258819, 0.000000},
  452.     {1.000000, 0.000000, 0.000000},
  453.     },
  454.  
  455.     {
  456.     {0.707107, 0.000000, -0.707107},
  457.     {0.683013, -0.183013, -0.707107},
  458.     {0.612372, -0.353553, -0.707107},
  459.     {0.500000, -0.500000, -0.707107},
  460.     {0.353553, -0.612372, -0.707107},
  461.     {0.183013, -0.683013, -0.707107},
  462.     {0.000000, -0.707107, -0.707107},
  463.     {-0.183013, -0.683013, -0.707107},
  464.     {-0.353553, -0.612372, -0.707107},
  465.     {-0.500000, -0.500000, -0.707107},
  466.     {-0.612372, -0.353553, -0.707107},
  467.     {-0.683013, -0.183013, -0.707107},
  468.     {-0.707107, 0.000000, -0.707107},
  469.     {-0.683013, 0.183013, -0.707107},
  470.     {-0.612372, 0.353553, -0.707107},
  471.     {-0.500000, 0.500000, -0.707107},
  472.     {-0.353553, 0.612372, -0.707107},
  473.     {-0.183013, 0.683013, -0.707107},
  474.     {0.000000, 0.707107, -0.707107},
  475.     {0.183013, 0.683013, -0.707107},
  476.     {0.353553, 0.612372, -0.707107},
  477.     {0.500000, 0.500000, -0.707107},
  478.     {0.612372, 0.353553, -0.707107},
  479.     {0.683013, 0.183013, -0.707107},
  480.     {0.707107, 0.000000, -0.707107},
  481.     },
  482.  
  483.     {
  484.     {0.000000, 0.000000, -1.000000},
  485.     {0.000000, 0.000000, -1.000000},
  486.     {0.000000, 0.000000, -1.000000},
  487.     {0.000000, 0.000000, -1.000000},
  488.     {0.000000, 0.000000, -1.000000},
  489.     {0.000000, 0.000000, -1.000000},
  490.     {0.000000, 0.000000, -1.000000},
  491.     {0.000000, 0.000000, -1.000000},
  492.     {0.000000, 0.000000, -1.000000},
  493.     {0.000000, 0.000000, -1.000000},
  494.     {0.000000, 0.000000, -1.000000},
  495.     {0.000000, 0.000000, -1.000000},
  496.     {0.000000, 0.000000, -1.000000},
  497.     {0.000000, 0.000000, -1.000000},
  498.     {0.000000, 0.000000, -1.000000},
  499.     {0.000000, 0.000000, -1.000000},
  500.     {0.000000, 0.000000, -1.000000},
  501.     {0.000000, 0.000000, -1.000000},
  502.     {0.000000, 0.000000, -1.000000},
  503.     {0.000000, 0.000000, -1.000000},
  504.     {0.000000, 0.000000, -1.000000},
  505.     {0.000000, 0.000000, -1.000000},
  506.     {0.000000, 0.000000, -1.000000},
  507.     {0.000000, 0.000000, -1.000000},
  508.     {0.000000, 0.000000, -1.000000},
  509.     },
  510.  
  511.     {
  512.     {-0.707107, 0.000000, -0.707107},
  513.     {-0.683013, 0.183013, -0.707107},
  514.     {-0.612372, 0.353553, -0.707107},
  515.     {-0.500000, 0.500000, -0.707107},
  516.     {-0.353553, 0.612372, -0.707107},
  517.     {-0.183013, 0.683013, -0.707107},
  518.     {0.000000, 0.707107, -0.707107},
  519.     {0.183013, 0.683013, -0.707107},
  520.     {0.353553, 0.612372, -0.707107},
  521.     {0.500000, 0.500000, -0.707107},
  522.     {0.612372, 0.353553, -0.707107},
  523.     {0.683013, 0.183013, -0.707107},
  524.     {0.707107, 0.000000, -0.707107},
  525.     {0.683013, -0.183013, -0.707107},
  526.     {0.612372, -0.353553, -0.707107},
  527.     {0.500000, -0.500000, -0.707107},
  528.     {0.353553, -0.612372, -0.707107},
  529.     {0.183013, -0.683013, -0.707107},
  530.     {0.000000, -0.707107, -0.707107},
  531.     {-0.183013, -0.683013, -0.707107},
  532.     {-0.353553, -0.612372, -0.707107},
  533.     {-0.500000, -0.500000, -0.707107},
  534.     {-0.612372, -0.353553, -0.707107},
  535.     {-0.683013, -0.183013, -0.707107},
  536.     {-0.707107, 0.000000, -0.707107},
  537.     },
  538.  
  539.     {
  540.     {-1.000000, 0.000000, 0.000000},
  541.     {-0.965926, 0.258819, 0.000000},
  542.     {-0.866025, 0.500000, 0.000000},
  543.     {-0.707107, 0.707107, 0.000000},
  544.     {-0.500000, 0.866025, 0.000000},
  545.     {-0.258819, 0.965926, 0.000000},
  546.     {0.000000, 1.000000, 0.000000},
  547.     {0.258819, 0.965926, 0.000000},
  548.     {0.500000, 0.866025, 0.000000},
  549.     {0.707107, 0.707107, 0.000000},
  550.     {0.866025, 0.500000, 0.000000},
  551.     {0.965926, 0.258819, 0.000000},
  552.     {1.000000, 0.000000, 0.000000},
  553.     {0.965926, -0.258819, 0.000000},
  554.     {0.866025, -0.500000, 0.000000},
  555.     {0.707107, -0.707107, 0.000000},
  556.     {0.500000, -0.866025, 0.000000},
  557.     {0.258819, -0.965926, 0.000000},
  558.     {0.000000, -1.000000, 0.000000},
  559.     {-0.258819, -0.965926, 0.000000},
  560.     {-0.500000, -0.866025, 0.000000},
  561.     {-0.707107, -0.707107, 0.000000},
  562.     {-0.866025, -0.500000, 0.000000},
  563.     {-0.965926, -0.258819, 0.000000},
  564.     {-1.000000, 0.000000, 0.000000},
  565.     },
  566.  
  567.     {
  568.     {-0.707107, 0.000000, 0.707107},
  569.     {-0.683013, 0.183013, 0.707107},
  570.     {-0.612372, 0.353553, 0.707107},
  571.     {-0.500000, 0.500000, 0.707107},
  572.     {-0.353553, 0.612372, 0.707107},
  573.     {-0.183013, 0.683013, 0.707107},
  574.     {0.000000, 0.707107, 0.707107},
  575.     {0.183013, 0.683013, 0.707107},
  576.     {0.353553, 0.612372, 0.707107},
  577.     {0.500000, 0.500000, 0.707107},
  578.     {0.612372, 0.353553, 0.707107},
  579.     {0.683013, 0.183013, 0.707107},
  580.     {0.707107, 0.000000, 0.707107},
  581.     {0.683013, -0.183013, 0.707107},
  582.     {0.612372, -0.353553, 0.707107},
  583.     {0.500000, -0.500000, 0.707107},
  584.     {0.353553, -0.612372, 0.707107},
  585.     {0.183013, -0.683013, 0.707107},
  586.     {0.000000, -0.707107, 0.707107},
  587.     {-0.183013, -0.683013, 0.707107},
  588.     {-0.353553, -0.612372, 0.707107},
  589.     {-0.500000, -0.500000, 0.707107},
  590.     {-0.612372, -0.353553, 0.707107},
  591.     {-0.683013, -0.183013, 0.707107},
  592.     {-0.707107, 0.000000, 0.707107},
  593.     },
  594.  
  595.     {
  596.     {0.000000, 0.000000, 1.000000},
  597.     {0.000000, 0.000000, 1.000000},
  598.     {0.000000, 0.000000, 1.000000},
  599.     {0.000000, 0.000000, 1.000000},
  600.     {0.000000, 0.000000, 1.000000},
  601.     {0.000000, 0.000000, 1.000000},
  602.     {0.000000, 0.000000, 1.000000},
  603.     {0.000000, 0.000000, 1.000000},
  604.     {0.000000, 0.000000, 1.000000},
  605.     {0.000000, 0.000000, 1.000000},
  606.     {0.000000, 0.000000, 1.000000},
  607.     {0.000000, 0.000000, 1.000000},
  608.     {0.000000, 0.000000, 1.000000},
  609.     {0.000000, 0.000000, 1.000000},
  610.     {0.000000, 0.000000, 1.000000},
  611.     {0.000000, 0.000000, 1.000000},
  612.     {0.000000, 0.000000, 1.000000},
  613.     {0.000000, 0.000000, 1.000000},
  614.     {0.000000, 0.000000, 1.000000},
  615.     {0.000000, 0.000000, 1.000000},
  616.     {0.000000, 0.000000, 1.000000},
  617.     {0.000000, 0.000000, 1.000000},
  618.     {0.000000, 0.000000, 1.000000},
  619.     {0.000000, 0.000000, 1.000000},
  620.     {0.000000, 0.000000, 1.000000},
  621.     },
  622.  
  623. };
  624.  
  625. draw_hemisphere() {
  626.  
  627.     lmbind(MATERIAL, MAT_HEMISPHERE);
  628.     lmbind(LMODEL, 1);
  629.  
  630.     bgntmesh();
  631.         n3f(hp[0][0]); v3f(hp[0][0]);
  632.         n3f(hp[1][0]); v3f(hp[1][0]);
  633.         n3f(hp[0][1]); v3f(hp[0][1]);
  634.         n3f(hp[1][1]); v3f(hp[1][1]);
  635.         n3f(hp[0][2]); v3f(hp[0][2]);
  636.         n3f(hp[1][2]); v3f(hp[1][2]);
  637.         n3f(hp[0][3]); v3f(hp[0][3]);
  638.         n3f(hp[1][3]); v3f(hp[1][3]);
  639.         n3f(hp[0][4]); v3f(hp[0][4]);
  640.         n3f(hp[1][4]); v3f(hp[1][4]);
  641.         n3f(hp[0][5]); v3f(hp[0][5]);
  642.         n3f(hp[1][5]); v3f(hp[1][5]);
  643.         n3f(hp[0][6]); v3f(hp[0][6]);
  644.         n3f(hp[1][6]); v3f(hp[1][6]);
  645.         n3f(hp[0][7]); v3f(hp[0][7]);
  646.         n3f(hp[1][7]); v3f(hp[1][7]);
  647.         n3f(hp[0][8]); v3f(hp[0][8]);
  648.         n3f(hp[1][8]); v3f(hp[1][8]);
  649.         n3f(hp[0][9]); v3f(hp[0][9]);
  650.         n3f(hp[1][9]); v3f(hp[1][9]);
  651.         n3f(hp[0][10]); v3f(hp[0][10]);
  652.         n3f(hp[1][10]); v3f(hp[1][10]);
  653.         n3f(hp[0][11]); v3f(hp[0][11]);
  654.         n3f(hp[1][11]); v3f(hp[1][11]);
  655.         n3f(hp[0][12]); v3f(hp[0][12]);
  656.         n3f(hp[1][12]); v3f(hp[1][12]);
  657.     endtmesh();
  658.  
  659.     bgntmesh();
  660.         n3f(hp[1][0]); v3f(hp[1][0]);
  661.         n3f(hp[2][0]); v3f(hp[2][0]);
  662.         n3f(hp[1][1]); v3f(hp[1][1]);
  663.         n3f(hp[2][1]); v3f(hp[2][1]);
  664.         n3f(hp[1][2]); v3f(hp[1][2]);
  665.         n3f(hp[2][2]); v3f(hp[2][2]);
  666.         n3f(hp[1][3]); v3f(hp[1][3]);
  667.         n3f(hp[2][3]); v3f(hp[2][3]);
  668.         n3f(hp[1][4]); v3f(hp[1][4]);
  669.         n3f(hp[2][4]); v3f(hp[2][4]);
  670.         n3f(hp[1][5]); v3f(hp[1][5]);
  671.         n3f(hp[2][5]); v3f(hp[2][5]);
  672.         n3f(hp[1][6]); v3f(hp[1][6]);
  673.         n3f(hp[2][6]); v3f(hp[2][6]);
  674.         n3f(hp[1][7]); v3f(hp[1][7]);
  675.         n3f(hp[2][7]); v3f(hp[2][7]);
  676.         n3f(hp[1][8]); v3f(hp[1][8]);
  677.         n3f(hp[2][8]); v3f(hp[2][8]);
  678.         n3f(hp[1][9]); v3f(hp[1][9]);
  679.         n3f(hp[2][9]); v3f(hp[2][9]);
  680.         n3f(hp[1][10]); v3f(hp[1][10]);
  681.         n3f(hp[2][10]); v3f(hp[2][10]);
  682.         n3f(hp[1][11]); v3f(hp[1][11]);
  683.         n3f(hp[2][11]); v3f(hp[2][11]);
  684.         n3f(hp[1][12]); v3f(hp[1][12]);
  685.         n3f(hp[2][12]); v3f(hp[2][12]);
  686.     endtmesh();
  687.  
  688.     bgntmesh();
  689.         n3f(hp[2][0]); v3f(hp[2][0]);
  690.         n3f(hp[3][0]); v3f(hp[3][0]);
  691.         n3f(hp[2][1]); v3f(hp[2][1]);
  692.         n3f(hp[3][1]); v3f(hp[3][1]);
  693.         n3f(hp[2][2]); v3f(hp[2][2]);
  694.         n3f(hp[3][2]); v3f(hp[3][2]);
  695.         n3f(hp[2][3]); v3f(hp[2][3]);
  696.         n3f(hp[3][3]); v3f(hp[3][3]);
  697.         n3f(hp[2][4]); v3f(hp[2][4]);
  698.         n3f(hp[3][4]); v3f(hp[3][4]);
  699.         n3f(hp[2][5]); v3f(hp[2][5]);
  700.         n3f(hp[3][5]); v3f(hp[3][5]);
  701.         n3f(hp[2][6]); v3f(hp[2][6]);
  702.         n3f(hp[3][6]); v3f(hp[3][6]);
  703.         n3f(hp[2][7]); v3f(hp[2][7]);
  704.         n3f(hp[3][7]); v3f(hp[3][7]);
  705.         n3f(hp[2][8]); v3f(hp[2][8]);
  706.         n3f(hp[3][8]); v3f(hp[3][8]);
  707.         n3f(hp[2][9]); v3f(hp[2][9]);
  708.         n3f(hp[3][9]); v3f(hp[3][9]);
  709.         n3f(hp[2][10]); v3f(hp[2][10]);
  710.         n3f(hp[3][10]); v3f(hp[3][10]);
  711.         n3f(hp[2][11]); v3f(hp[2][11]);
  712.         n3f(hp[3][11]); v3f(hp[3][11]);
  713.         n3f(hp[2][12]); v3f(hp[2][12]);
  714.         n3f(hp[3][12]); v3f(hp[3][12]);
  715.     endtmesh();
  716.  
  717.     bgntmesh();
  718.         n3f(hp[3][0]); v3f(hp[3][0]);
  719.         n3f(hp[4][0]); v3f(hp[4][0]);
  720.         n3f(hp[3][1]); v3f(hp[3][1]);
  721.         n3f(hp[4][1]); v3f(hp[4][1]);
  722.         n3f(hp[3][2]); v3f(hp[3][2]);
  723.         n3f(hp[4][2]); v3f(hp[4][2]);
  724.         n3f(hp[3][3]); v3f(hp[3][3]);
  725.         n3f(hp[4][3]); v3f(hp[4][3]);
  726.         n3f(hp[3][4]); v3f(hp[3][4]);
  727.         n3f(hp[4][4]); v3f(hp[4][4]);
  728.         n3f(hp[3][5]); v3f(hp[3][5]);
  729.         n3f(hp[4][5]); v3f(hp[4][5]);
  730.         n3f(hp[3][6]); v3f(hp[3][6]);
  731.         n3f(hp[4][6]); v3f(hp[4][6]);
  732.         n3f(hp[3][7]); v3f(hp[3][7]);
  733.         n3f(hp[4][7]); v3f(hp[4][7]);
  734.         n3f(hp[3][8]); v3f(hp[3][8]);
  735.         n3f(hp[4][8]); v3f(hp[4][8]);
  736.         n3f(hp[3][9]); v3f(hp[3][9]);
  737.         n3f(hp[4][9]); v3f(hp[4][9]);
  738.         n3f(hp[3][10]); v3f(hp[3][10]);
  739.         n3f(hp[4][10]); v3f(hp[4][10]);
  740.         n3f(hp[3][11]); v3f(hp[3][11]);
  741.         n3f(hp[4][11]); v3f(hp[4][11]);
  742.         n3f(hp[3][12]); v3f(hp[3][12]);
  743.         n3f(hp[4][12]); v3f(hp[4][12]);
  744.     endtmesh();
  745.  
  746.     bgntmesh();
  747.         n3f(hp[4][0]); v3f(hp[4][0]);
  748.         n3f(hp[5][0]); v3f(hp[5][0]);
  749.         n3f(hp[4][1]); v3f(hp[4][1]);
  750.         n3f(hp[5][1]); v3f(hp[5][1]);
  751.         n3f(hp[4][2]); v3f(hp[4][2]);
  752.         n3f(hp[5][2]); v3f(hp[5][2]);
  753.         n3f(hp[4][3]); v3f(hp[4][3]);
  754.         n3f(hp[5][3]); v3f(hp[5][3]);
  755.         n3f(hp[4][4]); v3f(hp[4][4]);
  756.         n3f(hp[5][4]); v3f(hp[5][4]);
  757.         n3f(hp[4][5]); v3f(hp[4][5]);
  758.         n3f(hp[5][5]); v3f(hp[5][5]);
  759.         n3f(hp[4][6]); v3f(hp[4][6]);
  760.         n3f(hp[5][6]); v3f(hp[5][6]);
  761.         n3f(hp[4][7]); v3f(hp[4][7]);
  762.         n3f(hp[5][7]); v3f(hp[5][7]);
  763.         n3f(hp[4][8]); v3f(hp[4][8]);
  764.         n3f(hp[5][8]); v3f(hp[5][8]);
  765.         n3f(hp[4][9]); v3f(hp[4][9]);
  766.         n3f(hp[5][9]); v3f(hp[5][9]);
  767.         n3f(hp[4][10]); v3f(hp[4][10]);
  768.         n3f(hp[5][10]); v3f(hp[5][10]);
  769.         n3f(hp[4][11]); v3f(hp[4][11]);
  770.         n3f(hp[5][11]); v3f(hp[5][11]);
  771.         n3f(hp[4][12]); v3f(hp[4][12]);
  772.         n3f(hp[5][12]); v3f(hp[5][12]);
  773.     endtmesh();
  774.  
  775.     lmbind(LMODEL, 0);
  776.     RGBcolor(255, 255, 255);
  777.     bgnpolygon();
  778.         v3f(hp[5][0]);
  779.         v3f(hp[5][1]);
  780.         v3f(hp[5][2]);
  781.         v3f(hp[5][3]);
  782.         v3f(hp[5][4]);
  783.         v3f(hp[5][5]);
  784.         v3f(hp[5][6]);
  785.         v3f(hp[5][7]);
  786.         v3f(hp[5][8]);
  787.         v3f(hp[5][9]);
  788.         v3f(hp[5][10]);
  789.         v3f(hp[5][11]);
  790.     endpolygon();
  791. }
  792.  
  793.